{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "f7d4bcf0-0710-43f0-8027-cf097535d757",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "from statsmodels.tsa.ar_model import AutoReg\n",
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "f78b45e2-ddbc-4606-8fc2-fbb929444b00",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     年份  电力可供量(亿千瓦小时)  电力生产量(亿千瓦小时)  水电生产电力量(亿千瓦小时)  火电生产电力量(亿千瓦小时)  \\\n",
      "0  2021       85200.1       85342.5         13390.0         58058.7   \n",
      "1  2020       77620.2       77790.6         13552.1         53302.5   \n",
      "2  2019       74866.3       75034.3         13044.4         52201.5   \n",
      "3  2018       71509.2       71661.3         12317.9         50963.2   \n",
      "4  2017       65914.0       66044.5         11978.7         47546.0   \n",
      "\n",
      "   核电生产电力量(亿千瓦小时)  风电生产电力量(亿千瓦小时)  电力进口量(亿千瓦小时)  电力出口量(亿千瓦小时)  \\\n",
      "0          4075.2          6561.0          59.4         201.8   \n",
      "1          3662.5          4664.7          47.5         217.9   \n",
      "2          3483.5          4060.3          48.6         216.5   \n",
      "3          2943.6          3659.7          56.9         209.1   \n",
      "4          2480.7          2972.3          64.2         194.7   \n",
      "\n",
      "   电力能源消费总量(亿千瓦小时)  农、林、牧、渔业电力消费总量(亿千瓦小时)  工业电力消费总量(亿千瓦小时)  建筑业电力消费总量(亿千瓦小时)  \\\n",
      "0          85200.1                 1596.5          56622.3            1132.9   \n",
      "1          77620.2                 1422.1          52353.4            1011.1   \n",
      "2          74866.1                 1336.2          50698.3             991.2   \n",
      "3          71508.2                 1242.5          49094.9             887.8   \n",
      "4          65914.0                 1175.1          46052.8             789.2   \n",
      "\n",
      "   交通运输、仓储和邮政业电力消费总量(亿千瓦小时)  批发和零售业、住宿和餐饮业电力消费总量(亿千瓦小时)  其他电力消费总量(亿千瓦小时)  \\\n",
      "0                    1993.0                      3869.6           7706.8   \n",
      "1                    1751.0                      3169.0           6517.0   \n",
      "2                    1752.3                      3187.1           6263.8   \n",
      "3                    1608.5                      2900.4           5716.5   \n",
      "4                    1418.0                      2526.6           4880.6   \n",
      "\n",
      "   居民生活电力消费总量(亿千瓦小时)  电力终端消费量(亿千瓦小时)  工业终端电力消费量(亿千瓦小时)  输配电损失量(亿千瓦小时)  \n",
      "0            12278.9         81944.0           53366.2         3256.1  \n",
      "1            11396.5         74386.7           49120.0         3233.5  \n",
      "2            10637.2         71536.0           47368.2         3330.1  \n",
      "3            10057.6         68156.5           45743.2         3351.7  \n",
      "4             9071.6         62718.1           42857.0         3195.8  \n"
     ]
    }
   ],
   "source": [
    "# 读取数据\n",
    "import os \n",
    "os.chdir(r\"D:\\Study\\Python\\python_da_proj(1)\\ClearData\")\n",
    "df = pd.read_csv(\"Electricity_20_interpolate.csv\", encoding='utf-8')\n",
    "# 打印出数据的前5行，检查数据是否导入正确\n",
    "#print(df.head())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "3d35ebaf-0c17-4683-a63f-9b224ef880c5",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "# 按照年份升序\n",
    "df.sort_values(by='年份',inplace=True,ignore_index=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "f60b54b3-cb7c-488d-812e-e3e6968974b7",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    " #df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "9b372398-9153-47f9-b1aa-6d718b247a40",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "x_columns=[\"电力能源消费总量(亿千瓦小时)\",\"电力可供量(亿千瓦小时)\",\"电力终端消费量(亿千瓦小时)\",\n",
    "           \"工业终端电力消费量(亿千瓦小时)\",\"工业电力消费总量(亿千瓦小时)\",\"建筑业电力消费总量(亿千瓦小时)\",\n",
    "           \"居民生活电力消费总量(亿千瓦小时)\"]\n",
    "y_columns=['电力生产量(亿千瓦小时)']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "25db2822-e463-4741-922d-83ea3f856063",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "# 划分特征值X和目标值y\n",
    "X = df[x_columns]\n",
    "y = df[y_columns]\n",
    "# 划分数据集\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "bb80f698-49f4-4628-b4b2-c605e1dd6fb4",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "# 决策树模型训练\n",
    "dtr = DecisionTreeRegressor(max_depth=3,ccp_alpha=0.001).fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "6b578f6e-fe14-4cba-ab7f-347cbe7ce46e",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "#模型预测\n",
    "train_pred = dtr.predict(X_train) #训练集预测\n",
    "test_pred = dtr.predict(X_test) #测试集预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "c37dd8f0-624b-4efe-be75-7ed5469c4fcf",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "def scores(y_true, y_pred):\n",
    "    \"\"\"\n",
    "    计算模型评价指标 R2\\MAE\\RMSE\\SMAPE\n",
    "    \"\"\"\n",
    "    r2 = r2_score(y_true, y_pred)\n",
    "    MAE = mean_absolute_error(y_true, y_pred)\n",
    "    RMSE = np.sqrt(mean_squared_error(y_true, y_pred))\n",
    "#     SMAPE = calculate_smape(y_true, y_pred)\n",
    "    SMAPE = 0\n",
    "    # 根据 flag 输出结果\n",
    "    evaluation_results = {'R2': r2, 'MAE': MAE, 'RMSE': RMSE, 'SMAPE': SMAPE}\n",
    "    for metric, value in evaluation_results.items():\n",
    "        print(f\"{metric}: {value}\")\n",
    "\n",
    "    return evaluation_results\n",
    "\n",
    "def calculate_smape(actual, forecast):\n",
    "    \"\"\"\n",
    "    计算SMAPE\n",
    "    :param actual: 实际观测值\n",
    "    :param forecast: 预测值\n",
    "    :return: SMAPE值\n",
    "    \"\"\"\n",
    "    if len(actual) != len(forecast):\n",
    "        raise ValueError(\"实际观测值和预测值的长度不一致\")\n",
    "\n",
    "    n = len(actual)\n",
    "    total_smape = 0\n",
    "    for i in range(n):\n",
    "        diff = abs(actual[i] - forecast[i])\n",
    "        denom = (abs(actual[i]) + abs(forecast[i])) / 2\n",
    "        total_smape += diff / denom\n",
    "\n",
    "    smape = (total_smape / n) * 100\n",
    "    return smape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "24ef65f7-96f4-4f4e-a8dc-871355a2044d",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Metrics for the Training Set\n",
      "R2: 0.9954682847014452\n",
      "MAE: 964.9277777777783\n",
      "RMSE: 1319.0942048954996\n",
      "SMAPE: 0\n",
      "\n",
      "Metrics for the Test Set\n",
      "R2: 0.9109178813645025\n",
      "MAE: 4508.97777777778\n",
      "RMSE: 4759.965639338713\n",
      "SMAPE: 0\n"
     ]
    }
   ],
   "source": [
    "print('Metrics for the Training Set')\n",
    "train_results = scores(y_train,train_pred)\n",
    "print()\n",
    "print('Metrics for the Test Set')\n",
    "test_results = scores(y_test,test_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "c2e9f260-b8c1-4195-ba21-c2ac91899421",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "# 合并训练集和测试集的数据\n",
    "y_train_plot = y_train.copy()\n",
    "y_test_plot = y_test.copy()\n",
    "y_train_plot['预测值'] = train_pred\n",
    "y_test_plot['预测值'] = test_pred\n",
    "y_concat = pd.concat([y_train_plot,y_test_plot]).sort_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "257e674b-f209-436b-8e78-0e590c371add",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAE3CAYAAADrBGFvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB6R0lEQVR4nO3deVxU5eLH8c8w7DsIuCAC7oprihp2s9LSFlvt/spupl4zy5bbYmW72WI3b9m+ec3sVrZrtllpWWqamqGEmhuKuKEiIMsMzJzfH6ODCCrgDMPg9/16zUvnPM8553kG9fid55znMRmGYSAiIiIiIiIiXsfH0w0QERERERERkbpRqBcRERERERHxUgr1IiIiIiIiIl5KoV5ERERERETESynUi4iIiIiIiHgphXoRERERERERL6VQLyIiIiIiIuKlFOpFREREREREvJRCvYiIiIiIiIiXUqgXEREBfvrpJ0wmEyaTidDQUPr06cN///tft5xr5MiRjBw58pSOYTKZ+Omnn1zSnqOdc845zs/h2Fd9eeyxx5zn9PHxoVWrVtx2220cPHiw3togIiLiLXw93QAREZGG5L333qNJkya88847jBkzhuzsbB577DGXnsMVx1uxYgUdOnQ49cYc44033qCwsJBdu3Zx6aWXMnXqVAYMGODy85yMv78/S5YswWq1smrVKh5++GEyMzNZsGBBvbdFRESkIVOoFxEROUrnzp3p0aMHgwcPprS0lKeeeopbbrmFuLg4l50jKSnplI/Ru3fvU29INY58UZCVlQVAmzZt3HauEzGZTM7zpqWlAXD77bezfft2WrVqVe/tERERaah0+72IiMhx3HTTTZSVlfHtt996uimnvSMBf8eOHR5uiYiISMOiUC8iInIc3bt3B2DdunUAfPTRR3Tp0oWgoCB69uxZ5VbwjIwMBg0aRFBQEK1ateLhhx+mvLy8ynGP90y9YRg8/vjjJCYmEhwcTPfu3fnmm2+qbdvxnqk/dOgQ48aNIzo6moiICEaOHEleXp6zPCkpiZkzZ/L000/TrFkzoqKiuO222zAMo6YfCzNnziQpKQmLxcIDDzxAYmIib7/9dqU6r7zyCm3atCEkJISzzjqL1atXVypfuHAhffr0ITAwkE6dOvHBBx+c8Jy7d+8GIDY2FgCbzcZjjz1Gy5YtCQsLY8iQIWzZsqXSPp9++ilt27YlKiqKG2+8kZtuuonIyEi2bdsGOB6DOOecc8jPz+eWW26hefPmLFy40Ll/Tc7x+uuv0759e4KCgmjfvj2zZs2qVL5mzRoGDhxIeHg4sbGxjB49mqKiokp1nnvuORITEwkMDGTgwIFkZGRUKj/nnHN47LHHWLduHUOHDiUyMhKbzXbCz0tERE4fCvUiIiLHER0dDUBeXh4LFy7kmmuuYdiwYcyfP59+/fpx4YUXsn79egBycnIYMGAAdrudL774gsmTJzNt2jSeeOKJGp/vnXfeYdKkSdx33318/fXXpKWlcdVVV3HgwIEaH+Pyyy9n3rx5vPLKK8yYMYOff/6ZIUOGVAqB06ZNY+7cufz3v//l3nvv5eWXX+arr76q8TmOuPrqq/n555+566676Nu3r3P7jBkzuPPOO/nXv/7F119/TVxcHOeddx779+8HYMOGDQwZMoTevXvz3Xff8X//938MHz78uM/Lr1+/nkmTJpGSkkLbtm0BmDRpEtOmTePJJ59k7ty5FBUVMWjQIOeXKFu3bmX48OHccsstzJ49mx9++IHCwkK+/vpr5xcDAFarlYEDB7J9+3YefPBB2rdv7yw72Tl++uknbr75Zq677jrmz5/Ptddey6hRo8jMzHQe47LLLqOsrIy5c+fyyiuvMH/+fCZPnuwsnzx5MhMnTmT8+PF88cUX+Pj4cPbZZ7N9+/ZKn8GWLVsYMGAALVu25IknnsDHR/+FExGRwwwRERExfvzxRwMwVq9e7dxmtVoNwBg7dqwxYMAA47LLLnOW2Ww2IyYmxnjkkUcMwzCMBx54wIiMjDQOHjzorDNt2jTj/vvvr3KuG264wbjhhhuqbH/00UeNiIgIo7S01DAMwzh06JAxb968Ssc8AjB+/PHHavvw3XffObf99ttvBmDMmTPHMAzDSExMNJo3b24UFhY663Tu3Nl44oknKh1r69atBmB8/vnnVc799ttvG4Bx2WWXGeXl5VXKExMTjTvuuMP5Pi8vzzCbzcaMGTOc/e/Ro0elfc444wxjxIgRzs8BqPRKSUkxMjMzDcMwjJKSEiMwMNB4/vnnnfuvWbPGAIyFCxcahmEYH3/8sREXF+csv/fee40LLrig0jmPnOfWW2+t0oeanOPI57B7927DMBx/JubNm2fs2rXLMAzDKCsrM3x9fY0pU6Y4j/H7778bv/32m2EYhlFUVGQEBwcbDzzwgLO8sLDQiIuLM/71r385tw0YMMAAjE8++aRKO0VERPQ1r4iIyHEcuW09OjqatWvXMnfuXOdSa2azmX379rFx40YAVq9eTffu3YmIiHDuf8cdd/D000/X+HzXXnstvr6+pKSkMHbsWD788EP+9re/VTrmiaxYsQKz2cy5557r3Jaamkp4eDgrVqxwbhs5ciShoaHO97GxsZSVldW4neCYnf7FF1/EbDZX2l5YWMi2bdt44YUXnJ9VVFQUNpvN+VmtXbuWP/74o9Jyeb///ruz/MjxV69ezddff43JZOKOO+6gU6dOAGzcuJHS0lLuvPNO5/7dunVzlgF07NiR/fv3s2TJEg4cOMDPP/9M586dq/QjJiam2p9RTc4xdOhQEhMTOeOMM7jhhht4/fXXSU1NpVmzZgD4+voybtw4Hn74YS666CIeffRRrFYrqampAPz5558UFxczaNAg53lDQ0Pp27dvpZ8XwJAhQ7jqqqtq+uMREZHTiGa/FxEROY61a9cCkJKSAsAtt9zCjTfeWKlOZGQk4Hge/ti13Pfs2cPGjRtJS0ur0e3SHTp0YOPGjcyfP5+lS5fy6KOP8sgjj7B69epKt4wfj3Gc5+JNJlOlsjZt2pz0WCfTvHnzE85C/8QTT3DxxRdX2nb0CgKXX345jz76aKXy4OBg5+9NJhM9evSgR48eXHXVVUyZMoXRo0dX+hJhxowZ9OzZs9IxWrZs6Wxfy5YtOfvss7Hb7fTp04eHHnqoSjtTUlIqfcFxrBOdo0mTJmRmZvLdd9+xZMkSXnjhBSZOnMjy5cvp2LEjAC+99BIjRozgp59+4qeffmLy5Mk88cQTPPDAA86fybF/bnx8fKr8LI9+vEFERORoGqkXERE5jrfeeovAwEAuuugiunTpwq5du5xBs0ePHsyZM8f5LHrPnj1JT0+noKDAuf+rr77KZZddVuPnn6dPn86iRYu45pprePHFF/ntt9/Iycnhyy+/rNH+qamp2Gw2Fi1a5Ny2atUq8vPznaPDQJXRdVcKCwujVatW7N+/v9JnNX36dBYvXgxAly5d2L59e6XyJUuWHHeyvEceeYStW7fy/vvvA9C2bVsCAgIoLCx07t+pUyeef/551qxZAzieh7/66qvZs2cPW7duZdmyZTRp0qTG/ajJOT777DNmz57N5ZdfzrPPPkt6ejqAsx87duzgX//6F127dmXChAl89dVX3HjjjbzxxhuA4wuF4ODgSnMJFBUVsWzZsko/LxERkRPRSL2IiMhRMjMzyc3N5d133+XDDz/kxRdfJDo6mkceeYTzzz+fBx98kMGDB7NkyRIef/xxPv74Y8Axiv/6669z5ZVXct9997Fz505eeuklxo0bV+Nz5+bm8thjj2GxWEhISOCLL74Aaj6yfu655zJw4EBGjhzJs88+i7+/P/feey99+vRh6NChtf8w6ujRRx91zibfr18/Pv/8c9544w2uv/56ACZOnEi3bt0YO3Ysw4cPZ8OGDdx999089dRT1R6va9euXH755Tz11FNcd911BAUFce+99/LYY48REBBAp06deOONN5g3bx6TJk0CICQkhC+++IL+/fsTHx9PSUkJSUlJBAUF1agPNTmHxWLhzjvvBBy3+y9btozCwkLnzysyMpJ3332X0tJShg8fTkFBAQsXLnSWh4SEcP/99/Pkk08SERFB9+7dmTp1KlarlbvuuqvuPwARETm9ePSJfhERkQbiyCRzgBEcHGz079+/yiRxH374oZGSkmIEBAQYHTt2NN5+++1K5WvXrjUGDhxoBAYGGomJicakSZMMq9Va5VzHmyivrKzMmDhxopGUlGQEBAQYbdq0MV5++eVq20s1E+UZhmOitbFjxxqRkZFGWFiYMWLECOPAgQPO8sTExCrtHjBggPHoo49W2nayifISExOrbdcRL730ktG6dWsjMDDQ6Nmzp/Hll19WKl+wYIGRmppq+Pv7G0lJScYzzzzjLHv00UeNgICASvVXr15tAMZHH31kGIZhlJeXG48++qgRHx9vBAUFGf379zeWLl1aqX5gYKARGxtrmM1mAzD8/f2NF154odJ5BgwYcNw+nOwchmEYU6dONdq1a2cEBgYaLVu2NB555BHDbrc7y5ctW2ace+65RkREhBEREWFccsklxtatW6scIyEhwQgICDDOPfdcY+3atZXKq/v5iIiIHGEyjFosTCsiIiLiBRISErj++uu5+OKL8ff3Jy8vj6lTp7Jv3z5+//13TzdPRETEZRTqRUREpNF5++23efnll9m4cSMlJSVER0dz5pln8tBDD9G7d29PN09ERMRlFOpFREREREREvJRmvxcRERERERHxUgr1IiIiIiIiIl5KoV5ERERERETESynU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jfZOblmnPioqivT09Coh3VX1j8jJyWHlypWkpaURGxvr9rKTaayh/s4772Tp0qWVwvrKlSvp0KEDYWEV60JarVbuv/9+rrzySu6//35mz55d6Ti5ubkYhkFcXOW/qI8//jgjRoxwvv/oo494+OGHmThxIpMmTcJsNlNSUsLevXtJTEwEHI9mTJgwgfHjx1dprzd/1iIiIiIiXssw4OA22LYUFj8P+/5ybA+KgrTboc9Y8u0BPP/9X7y7bBs2u0Ggnw+3ndeOf56VrFvt68gt69SfddZZtQpTta1/RHx8PPHx8fVWdrp6/vnnAfj000858t3OTTfdxKhRo2jZsiXgWCngkksuce5TUFDA5ZdfzrRp0yoda/v27YSHhxMZGQlAjx49KC0tdZYbhsETTzzBbbfdxj/+8Q+uv/56zGYzs2bN4rXXXuPXX38FoKysTOtSioiIiIh4irUY9q6DPWthdwbsyYA9f4KloKJOYCSk3QZ9b8LuF8onv+/gmW/Ws7/ICsBFXZvx4MWdiY888Z244hq1CvXz5s2r1cFrW18849prr+WOO+6gSZMmTJgwgdLSUjZt2kR2djZffPFFpVDfu3dvAgMD+f3337njjjv473//S/v27XnnnXf46quvnBMd3njjjXTr1s2534wZM1i7di3NmjXD19eXBx98kPnz57N3717y8/Pp3bs3APfffz/Dhg2r3w9AREREROR0YxhQuOtwcD8c4HevdTwfb9ir1vfxg9iO0Pky6HsTBIaTkZPPw3OXsnr7QQDaxIbw2KUp/K1d7e6MllOjxQBdzTCgrHaTCbqMXzDUYZTb39+fuXPnVlnmr6SkhICAgErbRo8ejc1mwzAMLrnkElJTU3n55ZcxmUwkJSU56x19+/y2bdu45557Ks3FkJ2dzZgxYxg3bpxz27hx4ygoOOobQBEREREROXXlVshd7xh1PzrElxyovn5wDDTrAk27QLOujl9j2oOvIy8cLLby7Odref+37RgGBPubuWNgO0b1T8bf1yOrpp/WFOpdrawYnmrhmXM/sBP8Q+q065gxY6o8E79582Y++OCDStsMw+Css85i+PDh3HffffTr1w+z2cy6deuct+wf69NPP+WCCy7AYrE4t/n4+PDII48wdepU57bc3Fz69etXp/aLiIiIiAhwKLfyrfO7M2DfBrCXV61rMkNMu8PhvQs0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",
      "text/plain": [
       "<Figure size 1200x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 测试集的真实值与预测值可视化\n",
    "plt.figure(figsize=(12,3))\n",
    "plt.plot(df['年份'],y_concat['预测值'],label= '预测值')\n",
    "plt.plot(df['年份'],y_concat[y_columns],label= '真实值')\n",
    "plt.title('DecisionTreeRegressor')\n",
    "plt.legend()\n",
    "plt.xticks(df['年份'])\n",
    "plt.xlabel('年份')\n",
    "plt.ylabel(y_columns)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "86b5f5bf-4a08-4fcd-815c-f845ac054f6e",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "# 预测未来20年的输出数据\n",
    "last_year = df['年份'].max()\n",
    "future_df = list(range(last_year,last_year+21))\n",
    "# 拟合自回归模型\n",
    "X_preds = []\n",
    "for col in x_columns:\n",
    "    model = AutoReg(df[col],lags=2)\n",
    "    model_fit = model.fit()\n",
    "    predictions = model_fit.predict(start = df.shape[0],end=df.shape[0]+19,dynamic = False)\n",
    "    X_preds.append(predictions.to_list())\n",
    "X_future = np.array(X_preds).T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "fc02a800-8d65-4d28-a876-a98b9146ed34",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "# 预测未来20年的y\n",
    "future_preds = dtr.predict(pd.DataFrame(X_future,columns=X.columns))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "fcfd5b4d-4023-4af4-80c9-147baf72e653",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAE3CAYAAADrBGFvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABDRUlEQVR4nO3de3hU1d328XuSkBM5Y0SEJGBQgSAiGIjBggoIpUVpRYv4iuCjgEotiqh44CQCveQBFClYERBExQMgtFKoULFSgSIxEqOIHAOiBQwzQwKTZLLePyjzEEnCzGSGzNbv57rmMnuvvde+Z4h75Tf7ZDPGGAEAAAAAAMsJq+8AAAAAAADAPxT1AAAAAABYFEU9AAAAAAAWRVEPAAAAAIBFUdQDAAAAAGBRFPUAAAAAAFgURT0AAAAAABZFUQ8AAAAAgEVR1AMAAAAAYFEU9QAASPrwww9ls9lks9kUFxenTp066ZVXXgnKtgYPHqzBgwfXqQ+bzaYPP/wwIHnOdN1113k+hx+/zpfx48d7thkWFqb09HT9/ve/17Fjx85bBgAArCKivgMAABBKlixZokaNGunVV1/VPffco6KiIo0fPz6g2whEf//+9791+eWX1z3Mj7z00ktyOp06dOiQbrrpJk2bNk3dunUL+HbOJTIyUhs3blRZWZk+/fRTPf300yosLNS6devOexYAAEIZRT0AAGdo06aN2rdvr169eunkyZOaPHmy7r//fl144YUB20bz5s3r3MfVV19d9yDVOP1Fwd69eyVJmZmZQdtWbWw2m2e7ubm5kqQHH3xQ+/fvV3p6+nnPAwBAqOL0ewAAajBs2DCVl5frb3/7W31H+dk7XeAfOHCgnpMAABBaKOoBAKjBlVdeKUn68ssvJUlvvfWW2rZtq5iYGF111VVnnQpeUFCgHj16KCYmRunp6Xr66adVUVFxVr81XVNvjNHEiROVkZGh2NhYXXnllVq9enW12Wq6pv748eMaPny4UlJSlJiYqMGDB6u4uNjT3rx5cy1cuFBTpkzRRRddpOTkZP3+97+XMcbbj0ULFy5U8+bN5XK59MQTTygjI0MLFiyosszs2bOVmZmphg0b6tprr1VeXl6V9vXr16tTp06Kjo5W69at9cYbb9S6ze+++06SlJqaKklyu90aP368mjVrpvj4ePXu3Vu7d++uss67776rli1bKjk5Wffee6+GDRumpKQk7du3T9KpyyCuu+462e123X///WrSpInWr1/vWd+bbcydO1eXXXaZYmJidNlll2nRokVV2j///HN1795dCQkJSk1N1d13362SkpIqy0yfPl0ZGRmKjo5W9+7dVVBQUKX9uuuu0/jx4/Xll1+qb9++SkpKktvtrvXzAgD8fFDUAwBQg5SUFElScXGx1q9frwEDBqh///5as2aNcnJy9Mtf/lJfffWVJOngwYPq1q2bKisrtXLlSj3zzDOaOXOmJk2a5PX2Xn31VU2YMEGPPfaY3n//feXm5uqWW27RDz/84HUf/fr106pVqzR79mzNnz9fH330kXr37l2lCJw5c6bee+89vfLKK3r00Uf14osv6q9//avX2zjt1ltv1UcffaSHH35YnTt39syfP3++HnroIY0cOVLvv/++LrzwQt1www06evSoJGnHjh3q3bu3rr76aq1du1a/+93vNHDgwBqvl//qq680YcIEZWVlqWXLlpKkCRMmaObMmXr22Wf13nvvqaSkRD169PB8ibJnzx4NHDhQ999/v95880198MEHcjqdev/99z1fDEhSWVmZunfvrv379+vJJ5/UZZdd5mk71zY+/PBD3Xfffbrjjju0Zs0a3X777RoyZIgKCws9fdx8880qLy/Xe++9p9mzZ2vNmjV65plnPO3PPPOMxowZowceeEArV65UWFiYunbtqv3791f5DHbv3q1u3bqpWbNmmjRpksLC+BMOAPBfBgAAmH/84x9GksnLy/PMKysrM5LM0KFDTbdu3czNN9/saXO73eaCCy4wY8eONcYY88QTT5ikpCRz7NgxzzIzZ840jz/++Fnbuuuuu8xdd9111vxx48aZxMREc/LkSWOMMcePHzerVq2q0udpksw//vGPat/D2rVrPfO2bNliJJkVK1YYY4zJyMgwTZo0MU6n07NMmzZtzKRJk6r0tWfPHiPJLF++/KxtL1iwwEgyN998s6moqDirPSMjw/zhD3/wTBcXF5vw8HAzf/58z/tv3759lXU6dOhgBg0a5PkcJFV5ZWVlmcLCQmOMMSdOnDDR0dFmxowZnvU///xzI8msX7/eGGPM22+/bS688EJP+6OPPmpuvPHGKts8vZ0RI0ac9R682cbpz+G7774zxpz6nVi1apU5dOiQMcaY8vJyExERYaZOnerpY9u2bWbLli3GGGNKSkpMbGyseeKJJzztTqfTXHjhhWbkyJGeed26dTOSzDvvvHNWTgAA+JoXAIAanD5tPSUlRdu3b9d7773nedRaeHi4jhw5op07d0qS8vLydOWVVyoxMdGz/h/+8AdNmTLF6+3dfvvtioiIUFZWloYOHaqlS5fqF7/4RZU+a/Pvf/9b4eHhuv766z3zsrOzlZCQoH//+9+eeYMHD1ZcXJxnOjU1VeXl5V7nlE7dnf6FF15QeHh4lflOp1P79u3T888/7/mskpOT5Xa7PZ/V9u3b9dlnn1V5XN62bds87af7z8vL0/vvvy+bzaY//OEPat26tSRp586dOnnypB566CHP+u3atfO0SVKrVq109OhRbdy4UT/88IM++ugjtWnT5qz3ccEFF1T7b+TNNvr27auMjAx16NBBd911l+bOnavs7GxddNFFkqSIiAgNHz5cTz/9tPr06aNx48aprKxM2dnZkqQvvvhCpaWl6tGjh2e7cXFx6ty5c5V/L0nq3bu3brnlFm//eQAAPyPc/R4AgBps375dkpSVlSVJuv/++3XvvfdWWSYpKUnSqevhf/ws9++//147d+5Ubm6uV6dLX3755dq5c6fWrFmjf/3rXxo3bpzGjh2rvLy8KqeM18TUcF28zWar0paZmXnOvs6lSZMmtd6FftKkSfrVr35VZd6ZTxDo16+fxo0bV6U9NjbW87PNZlP79u3Vvn173XLLLZo6daruvvvuKl8izJ8/X1dddVWVPpo1a+bJ16xZM3Xt2lWVlZXq1KmTnnrqqbNyZmVlVfmC48dq20ajRo1UWFiotWvXauPGjXr++ec1ZswYbd68Wa1atZIkzZo1S4MGDdKHH36oDz/8UM8884wmTZqkJ554wvNv8uPfm7CwsLP+Lc+8vAEAgDNxpB4AgBq8/PLLio6OVp8+fdS2bVsdOnTIU2i2b99eK1as8FyLftVVVyk/P18Oh8Oz/p/+9CfdfPPNXl//PG/ePG3YsEEDBgzQCy+8oC1btujgwYP6y1/+4tX62dnZcrvd2rBhg2fep59+Krvd7jk6LOmso+uBFB8fr/T0dB09erTKZzVv3jx9/PHHkqS2bdtq//79Vdo3btxY483yxo4dqz179uj111+XJLVs2VJRUVFyOp2e9Vu3bq0ZM2bo888/l3Tqevhbb71V33//vfbs2aNNmzapUaNGXr8Pb7axbNkyvfnmm+rXr5+ee+455efnS5LnfRw4cEAjR47UFVdcodGjR+uvf/2r7r33Xr300kuSTn2hEBsbW+VeAiUlJdq0aVOVfy8AAGrDkXoAAM5QWFiow4cPa/HixVq6dKleeOEFpaSkaOzYserZs6eefPJJ9erVSxs3btTEiRP19ttvSzp1FH/u3Ln67W9/q8cee0zffvutZs2apeHDh3u97cOHD2v8+PFyuVxKS0vTypUrJXl/ZP36669X9+7dNXjwYD333HOKjIzUo48+qk6dOqlv376+fxh+GjdunOdu8jk5OVq+fLleeukl3XnnnZKkMWPGqF27dho6dKgGDhyoHTt2aNSoUZo8eXK1/V1xxRXq16+fJk+erDvuuEMxMTF69NFHNX78eEVFRal169Z66aWXtGrVKk2YMEGS1LBhQ61cuVJdunRR06ZNdeLECTVv3lwxMTFevQdvtuFyufTQQw9JOnW6/6ZNm+R0Oj3/XklJSVq8eLFOnjypgQMHyuFwaP369Z72hg0b6vHHH9ezzz6rxMREXXnllZo2bZrKysr08MMP+/8PAAD4eanXK/oBAAgRp28yJ8nExsaaLl26nHWTuKVLl5qsrCwTFRVlWrVqZRYsWFClffv27aZ79+4mOjraZGRkmAkTJpiysrKztlXTjfLKy8vNmDFjTPPmzU1UVJTJzMw0L774YrV5Vc2N8ow5daO1oUOHmqSkJBMfH28GDRpkfvjhB097RkbGWbm7detmxo0bV2XeuW6Ul5GRUW2u02bNmmUuueQSEx0dba666irzl7/8pUr7unXrTHZ2tomMjDTNmzc3f/zjHz1t48aNM1FRUVWWz8vLM5LMW2+9ZYwxpqKiwowbN840bdrUxMTEmC5duph//etfVZaPjo42qampJjw83EgykZGR5vnnn6+ynW7dutX4Hs61DWOMmTZtmrn00ktNdHS0adasmRk7dqyprKz0tG/atMlcf/31JjEx0SQmJppf//rXZs+ePWf1kZaWZqKiosz1119vtm/fXqW9un8fAABOsxnjw4NpAQAALCAtLU133nmnfvWrXykyMlLFxcWaNm2ajhw5om3bttV3PAAAAoaiHgAA/OQsWLBAL774onbu3KkTJ04oJSVF11xzjZ566ildffXV9R0PAICAoagHAAAAAMCiuPs9AAAAAAAWRVEP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F4zMAAAAAABAfhyp//jjj7V27VqlpKRo27Ztio6OVlFRkS677DJ99dVXKi4uVmRkpBo2bCibzRaMzAAAAAAAQH4U9U2aNFHjxo118803V5l/7bXX6oILLlBycrJsNpvCwrgHHwAAAAAAwRSwyttms3leZ84DAAAAAADB4fM19dUxxujRRx/Vd999p71798rhcCg3N1d79+4NRPcAAAAAAKAaATlSb7PZNHz4cF1yySXq3bu3MjMzNWfOHKWnpweiewAAAAAAUI2AnX7fokULNWzYUI0bN1bDhg115ZVXKiYmJlDdAwAAAACAHwnqNfUAAAAAACB4fL6mfsOGDQoLC9O1116rxx57TGVlZTLGaODAgXK5XEpMTFRFRYUcDgcFPgAAAAAAQeRzUX/y5ElFRkZKktxut7Kzs3XnnXfqpptuUlhYmMLCwvTuu++qsrJSJ06cCHhgAAAAAABwis9F/emCXpLCw8MlSQkJCUpISPDMHzFihCSpd+/edc0HAAAAAABqYDPGmPoOEeocDocSExNlt9urfHkBAAAAAEAweFuH+nWjPIfD4fnZGKP58+eL7wYAAAAAADi/fC7q3W63UlNTPdM2m01Dhw7lpngAAAAAAJxnPhf14eHhatiwofbv36+SkhJJoqAHAAAAAKAe+HX6fXh4uB5++GFdeumleuGFF/wq6hcvXqz09HTFxcWpR48e2rt371nL9O7dWwsXLvRMFxQUKDs7W8nJyRo9enSVU/79bQMAAAAAwKr8KuptNpvmz5+vadOmacWKFXK73T6tv2vXLj355JNasWKFCgsLlZGRocGDB1dZZsmSJVqzZo1n2uVyqW/fvurYsaO2bt2qwsJCT8HvbxsAAAAAAFbmU1H/7bffavHixTLGKCEhQQMHDtT69es9j7bzVl5ennJyctShQwelp6dryJAh+vrrrz3tP/zwg0aNGqXLL7/cM2/16tWy2+2aPn26MjMzNXnyZL3yyit1agMAAAAAwMp8ek79pEmT9N5776mysrJOG23Tpo3Wr1+vvLw8XXLJJZo9e7Z69uzpaR81apR+85vf6MSJE555+fn5ysnJUWxsrCSpXbt2KiwsrFMbAAAAAABW5lNR/8c//lGzZ89W48aNVVlZqRdffNHnU++lU0V9//791aFDB0lSixYttHnzZknSP/7xD61bt04FBQV68MEHPes4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I/UAAAAAAFgURT0AAAAAABZFUQ8AAAAAgEVR1CPkHT16VP/617905MiR+o4CAD6x4v7LapmtlleqPXMovp9QzHQuVststbyS9TJbLa9kzcyoJwYha8WKFaZFixYmPDzcdOrUyRQWFhpjjNm+fbu5+uqrTVJSknnkkUdMZWXlOdc5V1uoZn7jjTdMUlKSad++vYmJiTFvvPFGSOc9U69evcyCBQsCmjcYmUeMGGEkeV6ZmZkhnfe0xx57zPz6178OaNZgZF6wYEGVz/f0K5C/G4H+jBctWmTS0tJMw4YNTffu3c2ePXsCljVYmefPn2+ysrJMYmKiGTBggDl8+HC9561t/1XbeqGa2Rhjjhw5Ypo3bx4yvxO15Q3VMa+2zKE45nmbKZTGvNoyh+KY581nHGpjXk2ZQ3XMq+0zDtUxr7bMoTjmnenH+4NQHfNqy2xMcMe8QKOoD1HffPONSU5ONkuXLjXfffedufXWW01ubq45efKkad68uRk2bJj55ptvTJ8+fcz8+fNrXedcbaGaubi42FxwwQVm+/btxphTO9309PSQzXum1157LeCDWLAyX3PNNeavf/2rKS4uNsXFxcbhcIR0XmNO7aDj4+PNN998E7Cswcrscrk8n21xcbEpKioyF1xwgdm1a1dI5v3mm29MWlqa+fTTT82+ffvM3Xffbbp16xaQrMHK/Pe//93ExcWZtWvXmr1795o+ffqYa6+9tl7z1rb/qm29UM1sjDGHDx82OTk5RlLA/8AJdN5QHfNqyxyKY563mUJpzDtX5lAb87z5jENtzKstcyiOeefaV4TimFdb5lAc88704/1BqI55tWU2JrhjXjBQ1IeoVatWmTlz5nim169fbyIjI83y5ctNcnKyKSkpMcYY89lnn5kuXbrUus652kI18/79+81rr73macvPzzfx8fEhm/e0o0ePmsaNG5vLL7884H/gBDpzeXm5iY+PN06nM6A5g5XXGGMqKytNbm6uefrppy2T+UzPPvusGTp0aMjmffvtt82tt97qafvnP/9pmjRpErC8wch85513mpEjR3ravvjiCyPJHDlypN7y1rb/qm29QAl0ZmOM6d69u5k5c2ZQ/sAJdN5QHfNqyxyKY543mUJtzKstcyiOeef6jENxzPPldzUUxrza8obqmFdb5lAc806rbn8QqmNebZmNCe6YFwwU9RYx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",
      "text/plain": [
       "<Figure size 1200x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘图\n",
    "plt.figure(figsize=(12,3))\n",
    "plt.plot(range(last_year+1,last_year+21,1),future_preds)\n",
    "plt.title('DecisionTreeRegressor')\n",
    "plt.xticks(range(last_year+1,last_year+21,1))\n",
    "plt.xlabel('年份')\n",
    "plt.ylabel(y_columns)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0abc51f5-2723-4428-9e7f-00ea0aa2f9be",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9fbd83cc-0760-4b00-832e-0d335a595e37",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
